import { DomEditor } from '@wangeditor/editor'
import { Boot } from '@wangeditor/editor'

class MyFontMenu {
    constructor() {
        this.title = '一键设置'
        this.tag = 'button'
    }

    // 获取菜单执行时的 value ，用不到则返回空字符串或 false
    getValue(editor) {
        const selection = editor.selection
        if (selection == null) return ''
        const node = DomEditor.getSelectedNodeByType(editor, 'text')
        if (node == null) return ''
        return node.style || ''
    }

    isActive(editor) {
        // 根据当前选中的文本判断是否激活
        const selectedText = editor.getSelectionText();
        // 这里可以根据需要实现具体的逻辑
        return false;
    }

    // 菜单是否需要禁用（如选中 H1 ，“引用”菜单被禁用），用不到则返回 false
    isDisabled(editor) {
        if (editor.selection == null) return true // 禁用
        return false
    }

    // 点击菜单时触发的函数
    exec(editor,value) {
        const html = editor.getHtml()
        // 创建一个临时元素来操作HTML
        const tempDiv = document.createElement('div')
        tempDiv.innerHTML = html

        // 遍历所有元素并设置样式
        const elements = tempDiv.querySelectorAll('*')
        elements.forEach(el => {
            // 跳过不需要处理的空元素、Void元素（如<img>, <br>等）和特殊元素
            if (el.childNodes.length === 0 ||
                ['IMG', 'BR', 'HR', 'INPUT', 'META', 'LINK'].includes(el.tagName)) {
                return;
            }

            // 创建一个新的span元素
            const span = document.createElement('span');
            span.style.fontSize = '16pt';
            span.style.fontFamily = '仿宋_GB2312';

            // 将原元素的所有子节点移动到span中
            while (el.firstChild) {
                span.appendChild(el.firstChild);
            }

            // 将span添加回原元素
            el.appendChild(span);

        })
        // 获取处理后的HTML
        const newHtml = tempDiv.innerHTML

        // 清空编辑器内容
        editor.clear()
        // // 插入处理后的内容
        editor.dangerouslyInsertHtml(`${newHtml}`)


        // // 第三种
        // const selectedText = editor.getSelectionText(); // 使用正确的API方法获取选中的文本
        // if (selectedText == null) return;

        // // 弹出一个对话框让用户选择字体和字号 prompt()
        // const font = '仿宋_GB2312'
        // const fontSize = '16pt'

        // if (font && fontSize) {
        //     let stle = `<span style="font-family: ${font}; font-size: ${fontSize}!important;">${editor.getSelectionText()}</span>`
        //     editor.setHtml(stle)
        // }
    }
}

export default MyFontMenu
// // 定义菜单配置
// const menuConf = {
//     key: 'myFontMenu', // menu key ，唯一。注册之后，可配置到工具栏
//     factory() {
//         return new MyFontMenu();
//     },
// };

// // 注册到 wangEditor
// Boot.registerMenu(menuConf);

